/*
版权@hehung所有，转载请申明
email：1398660197@qq.com
*/
#ifndef __APP_RTC_H__
#define __APP_RTC_H__

#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <drv/rtc.h>


/* 网络时间使能和禁能标志 */
#define RTC_NTP_ENABLE                      (STD_ON)
#define RTC_NTP_DISABLE                     (STD_OFF)

/* 设置上升和下降方式标志 */
#define RTC_SETTING_UP                      (0U)
#define RTC_SETTING_DOWN                    (1U)

typedef enum
{
	RTC_SETTING_YEAR = 0,
	RTC_SETTING_MON,
	RTC_SETTING_MDAY,
	RTC_SETTING_HOUR,
	RTC_SETTING_MIN,
	RTC_SETTING_SEC
} e_RtcSetting;


struct my_tm {
    int my_tm_sec; /* 秒 – 取值区间为[0,59] */
    int my_tm_min; /* 分 - 取值区间为[0,59] */
    int my_tm_hour; /* 时 - 取值区间为[0,23] */
    int my_tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
    int my_tm_mon; /* 月份（从一月开始，0代表一月） - 取值区间为[0,11] */
	int my_tm_year; /* 年份，其值等于实际年份减去1900 */
};


extern void Rtc_Init(void);
extern void Rtc_SetNtpEnStatus(uint8_t en_flg);
extern uint8_t Rtc_GetNtpInitFishFlg(void);
extern uint8_t Rtc_GetNtpEnStatus(void);
extern void my_localtime(time_t time,struct my_tm *t);
extern time_t my_mktime(struct my_tm dt);
extern csi_rtc_time_t Rtc_GetCurrentTime(void);
extern void Rtc_UpdateTimeFromIot(int ts);
extern csi_rtc_time_t Rtc_GetSettingTime(void);
extern uint8_t Rtc_GetNtpSuccessFlg(void);
extern void Rtc_UpdateSetFromCurTime(void);
extern void Rtc_Setting(e_RtcSetting setting_flg, uint8_t setting_dir);
extern uint8_t Rtc_CalculateWeekday(uint16_t y, uint8_t m, uint8_t d);
extern uint8_t Rtc_UpdateTimeManual(void);

#endif
